-- 这里的 KEYS[1] 就是锁的key，这里的ARGV[1] 就是当前线程标示
-- 获取锁中的标示，判断是否与当前线程标示一致
--if (redis.call('GET', KEYS[1]) == ARGV[1]) then
--  -- 一致，则删除锁
--  return redis.call('DEL', KEYS[1])
--end
---- 不一致，则直接返回
--return 0
--#获取锁的Lua脚本
local key = KEYS[1];--锁的key
local thredId = ARG[1];--线程的唯一标识
local releaseTime = ARG[2];--锁的自动释放时间
--判断锁是否还是自己持有
if(redis.call("hexists",key,thredId) == 0) then
  return nil;--如果已经不是自己，则直接返回
end
--是自己的锁，则重入次数-1
local count = redis.call('hincreby',key,thredId,-1);
--判断是否可重入次数为0
if(count>0) then
  redis.call('expire',key,releaseTime);
  return nil;
else
  redis.call('del',key);
  return nil;
end